module Arbiter(
  output       io_in_0_ready,
  input        io_in_0_valid,
  input  [7:0] io_in_0_bits,
  output       io_in_1_ready,
  input        io_in_1_valid,
  input  [7:0] io_in_1_bits,
  input        io_out_ready,
  output       io_out_valid,
  output [7:0] io_out_bits
);
  wire  grant_1 = ~io_in_0_valid; // @[Arbiter.scala 46:78]
  assign io_in_0_ready = io_out_ready; // @[Arbiter.scala 149:19]
  assign io_in_1_ready = grant_1 & io_out_ready; // @[Arbiter.scala 149:19]
  assign io_out_valid = ~grant_1 | io_in_1_valid; // @[Arbiter.scala 150:31]
  assign io_out_bits = io_in_0_valid ? io_in_0_bits : io_in_1_bits; // @[Arbiter.scala 139:15 141:26 143:19]
endmodule
module Arbiters(
  input        clock,
  input        reset,
  output       io_in_0_ready,
  input        io_in_0_valid,
  input  [7:0] io_in_0_bits,
  output       io_in_1_ready,
  input        io_in_1_valid,
  input  [7:0] io_in_1_bits,
  input        io_out_ready,
  output       io_out_valid,
  output [7:0] io_out_bits
);
  wire  arbiter_io_in_0_ready; // @[Arbiters.scala 14:23]
  wire  arbiter_io_in_0_valid; // @[Arbiters.scala 14:23]
  wire [7:0] arbiter_io_in_0_bits; // @[Arbiters.scala 14:23]
  wire  arbiter_io_in_1_ready; // @[Arbiters.scala 14:23]
  wire  arbiter_io_in_1_valid; // @[Arbiters.scala 14:23]
  wire [7:0] arbiter_io_in_1_bits; // @[Arbiters.scala 14:23]
  wire  arbiter_io_out_ready; // @[Arbiters.scala 14:23]
  wire  arbiter_io_out_valid; // @[Arbiters.scala 14:23]
  wire [7:0] arbiter_io_out_bits; // @[Arbiters.scala 14:23]
  Arbiter arbiter ( // @[Arbiters.scala 14:23]
    .io_in_0_ready(arbiter_io_in_0_ready),
    .io_in_0_valid(arbiter_io_in_0_valid),
    .io_in_0_bits(arbiter_io_in_0_bits),
    .io_in_1_ready(arbiter_io_in_1_ready),
    .io_in_1_valid(arbiter_io_in_1_valid),
    .io_in_1_bits(arbiter_io_in_1_bits),
    .io_out_ready(arbiter_io_out_ready),
    .io_out_valid(arbiter_io_out_valid),
    .io_out_bits(arbiter_io_out_bits)
  );
  assign io_in_0_ready = arbiter_io_in_0_ready; // @[Arbiters.scala 15:17]
  assign io_in_1_ready = arbiter_io_in_1_ready; // @[Arbiters.scala 15:17]
  assign io_out_valid = arbiter_io_out_valid; // @[Arbiters.scala 16:10]
  assign io_out_bits = arbiter_io_out_bits; // @[Arbiters.scala 16:10]
  assign arbiter_io_in_0_valid = io_in_0_valid; // @[Arbiters.scala 15:17]
  assign arbiter_io_in_0_bits = io_in_0_bits; // @[Arbiters.scala 15:17]
  assign arbiter_io_in_1_valid = io_in_1_valid; // @[Arbiters.scala 15:17]
  assign arbiter_io_in_1_bits = io_in_1_bits; // @[Arbiters.scala 15:17]
  assign arbiter_io_out_ready = io_out_ready; // @[Arbiters.scala 16:10]
endmodule
